package 环形链表II;

import java.util.HashSet;
import java.util.Set;

public class Solution2 {

    public ListNode detectCycle(ListNode head) {
        // 哈希表法，如果set中存在当前遍历的元素则说明存在环，且为环的入口
        ListNode findStart = head;
        Set<ListNode> visited = new HashSet<>();
        while ( findStart != null ){
            if ( visited.add( findStart ) )
                findStart = findStart.next;
            else
                return findStart;   // 添加失败即找到了环入口
        }
        return null;
    }
}
